A host controller manages the data transfer connection between a host computer system and a peripheral device (e.g., network devices, storage devices). In current computer systems, high speed peripheral devices are coupled to host computer systems via a static configuration and connectivity protocol with a dedicated input/output (I/O) port and a specifically designed host controller associated with that port. In order to provide system users the flexibility to connect a variety of peripheral device types, computer systems must include a separate port and host controller to provide for connectivity for each peripheral device type.
An I/O port that has been designated for a particular device type is hardwired as such. For example, a particular port may be configured specifically for Serial Advanced Technology Attachment (SATA) devices, and this port cannot subsequently support a Peripheral Component Interconnect Express (PCIe) device or a Universal Serial Bus (USB) device.
Common I/O (or alternatively “converged I/O”) is a concept that enables flexibility in connecting any device to a standard connector regardless of the device type. This technology enables computer system manufacturers to include standard connectors for any type of peripheral device.
FIG. 1 is a block diagram of a prior art system utilizing a common I/O port. System 100 includes CPU 110, host bus 115, non-volatile BIOS storage 120, and host controllers 130-139. Said host controllers enable data transfer communication between peripheral device 160 and, for example, host hardware and software applications executed via CPU 110. In this prior art solution it is understood that, even with the flexibility provided by common I/O port 150, host controllers 130-139 must still be static dedicated hardware—i.e., dedicated to a specific downstream device type (e.g., the device type device 160 may be a SATA device and this will only be compatible with SATA host controller 131).
Thus, while multiple device types may be supported by common I/O port 150, a fixed set of separate host controllers needs to be utilized and multiplexed (via multiplexer 150) to support said multiple device types. This type of solution does not allow for re-use and detrimentally effects scalability—if a system is to include multiple common I/O ports to support connecting a plurality of peripheral devices to the system, the system would have to include corresponding instances of host controllers 130-139 and multiplexer 140 for each common I/O port.
Descriptions of certain details and implementations follow, including a description of the figures, which may depict some or all of the embodiments described below, as well as discussing other potential embodiments or implementations of the inventive concepts presented herein. An overview of embodiments of the invention is provided below, followed by a more detailed description with reference to the drawings.